libxl: Only call stat() when adding a disk if we expect a device to exist.
authorDavid Scott <dave.scott@eu.citrix.com>
Tue, 23 Apr 2013 09:59:26 +0000 (10:59 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 24 Apr 2013 11:15:44 +0000 (12:15 +0100)
commita8a1f236a2964506a22d1779648d8e1c8668cb1a
tree54ebb8f4bc5f5c980ac12ce204f7fca3dfa023aa
parent3051bdedc3ef82eb5f14978823dec00784d69d0e
libxl: Only call stat() when adding a disk if we expect a device to exist.

We consider calling stat() a helpful error check in the following
circumstances only:
 1. the disk backend type must be PHYsical
 2. the disk backend domain must be the same as the running libxl
    code (ie LIBXL_TOOLSTACK_DOMID)
 3. there must not be a hotplug script because this would imply that
    the device won't be created until after the hotplug script has
    run.

With this fix, it is possible to use qemu's built-in block drivers
such as ceph/rbd, with a xl config disk spec like this:

disk=[ 'backendtype=qdisk,format=raw,vdev=hda,access=rw,target=rbd:rbd/ubuntu1204.img' ]

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
tools/libxl/libxl_device.c